﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Web.Routing;

namespace $safeprojectname$.Web
{
    public interface IUrlHelper
    {
        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <returns></returns>
        string Action(string actionName);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "routeValues"></param>
        /// <returns></returns>
        string Action(string actionName, object routeValues);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "controllerName"></param>
        /// <returns></returns>
        string Action(string actionName, string controllerName);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "routeValues"></param>
        /// <returns></returns>
        string Action(string actionName, RouteValueDictionary routeValues);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "controllerName"></param>
        /// <param name = "routeValues"></param>
        /// <returns></returns>
        string Action(string actionName, string controllerName, object routeValues);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "controllerName"></param>
        /// <param name = "routeValues"></param>
        /// <returns></returns>
        string Action(string actionName, string controllerName, RouteValueDictionary routeValues);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "controllerName"></param>
        /// <param name = "routeValues"></param>
        /// <param name = "protocol"></param>
        /// <returns></returns>
        string Action(string actionName, string controllerName, object routeValues, string protocol);

        /// <summary>
        ///     Creates the standard URLwhich could be extend with some parameters on the AopUrlFilterAttribute
        ///     EVERY link ON PAGE therefore contains the added parameters 
        ///     - You can therefore keep different information for any opened browser window.
        /// </summary>
        /// <param name = "actionName"></param>
        /// <param name = "controllerName"></param>
        /// <param name = "routeValues"></param>
        /// <param name = "protocol"></param>
        /// <param name = "hostName"></param>
        /// <returns></returns>
        string Action(string actionName, string controllerName, RouteValueDictionary routeValues, string protocol,
            string hostName);

        ///// <summary>
        ///// Converts a virtual (relative) path to an application absolute path.
        ///// </summary>
        ///// <param name="contentPath">The virtual path of the content.</param>
        ///// <returns>The application absolute path.</returns>
        //string Content(string contentPath);

    }
}